package com.cmc.cloud.cmclink.doc.convert;

import com.cmc.cloud.cmclink.doc.entity.SpecialCargoDgPackingDO;
import com.cmc.cloud.cmclink.doc.vo.specialcargodgpackingvo.PackingCreateOrUpdateVO;
import com.cmc.cloud.cmclink.doc.vo.specialcargodgpackingvo.SpecialCargoDgPackingBaseVO;
import com.cmc.cloud.cmclink.doc.vo.specialcargodgpackingvo.SpecialCargoDgPackingRespVO;
import com.cmc.cloud.cmclink.doc.vo.specialcargodgpackingvo.SpecialCargoDgPackingUpdateReqVO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

import java.util.List;

/**
 * 特种货审批dg包装 Convert
 *
 * @author 集运管理员
 */
@Mapper
public interface SpecialCargoDgPackingConvert {

    SpecialCargoDgPackingConvert INSTANCE = Mappers.getMapper(SpecialCargoDgPackingConvert.class);

    /**
     * 属性转换 convert
     *
     * @param bean
     * @return SpecialCargoDgPackingDO
     */
    SpecialCargoDgPackingDO convert(SpecialCargoDgPackingBaseVO bean);

    /**
     * 属性转换 convert
     *
     * @param bean
     * @return SpecialCargoDgPackingDO
     */
    SpecialCargoDgPackingDO convert(PackingCreateOrUpdateVO bean);

    /**
     * 属性转换 convert
     *
     * @param bean
     * @return SpecialCargoDgPackingDO
     */
    SpecialCargoDgPackingDO convert(SpecialCargoDgPackingUpdateReqVO bean);

    /**
     * 属性转换 convert
     *
     * @param bean
     * @return SpecialCargoDgPackingRespVO
     */
    SpecialCargoDgPackingRespVO convert(SpecialCargoDgPackingDO bean);

    /**
     * 属性转换 convert
     *
     * @param list
     * @return List<SpecialCargoDgPackingRespVO>
     */
    List<SpecialCargoDgPackingRespVO> convertList(List<SpecialCargoDgPackingDO> list);

    /**
     * 将API请求VO转换为DO
     *
     * @param dgPacking
     * @return SpecialCargoDgPackingDO
     */
    SpecialCargoDgPackingDO convertApi(com.cmc.cloud.cmclink.doc.api.document.req.so.PackingCreateOrUpdateVO dgPacking);

    /**
     * 属性转换
     *
     * @param specialCargoDgPackingDoList
     * @return
     */
    List<com.cmc.cloud.cmclink.doc.api.document.req.so.PackingCreateOrUpdateVO> convertPackingCreateOrUpdateVo(List<SpecialCargoDgPackingDO> specialCargoDgPackingDoList);

    /**
     * 将DO列表转换为查询响应VO列表
     *
     * @param specialCargoDgPackingDoList
     * @return
     */
    List<PackingCreateOrUpdateVO> convertDo2PackVo(List<SpecialCargoDgPackingDO> specialCargoDgPackingDoList);

    /**
     * 将API请求VO列表转换为查询响应VO列表
     *
     * @param specialCargoDgPackingDoList
     * @return
     */
    List<PackingCreateOrUpdateVO> convertApi2SpcPackVo(List<com.cmc.cloud.cmclink.doc.api.document.req.so.PackingCreateOrUpdateVO> specialCargoDgPackingDoList);
}
